home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / utility2 / wincmd.zip / WINCMC.ZIP / WINCMD.H < prev    next >
C/C++ Source or Header  |  1993-03-06  |  9KB  |  325 lines

  1. //===========================================================
  2. // WINCMD.H -- Header File 
  3. // Copyright (c) 1993 Douglas Boling
  4. //===========================================================
  5. //-----------------------------------------------------------
  6. // Generic defines and data types
  7. //-----------------------------------------------------------
  8. #if !defined(WIN32)
  9.   #define WIN16     TRUE
  10.   #define WIN31
  11.  
  12.   #define INT       int
  13.   #define UINT      WORD
  14.   #define APIENTRY  PASCAL
  15.   #define WNDPROC   FARPROC
  16. #else
  17.   #define WIN16     FALSE
  18. #endif
  19.  
  20. struct decodeUINT {                         // structure associates
  21.     UINT Code;                              // messages 
  22.     LONG (*Fxn)(HWND, UINT, UINT, LONG);    // with a function
  23. }; 
  24. struct decodeCMD {                          // structure associates
  25.     UINT Code;                              // menu IDs with a 
  26.     LONG (*Fxn)(HWND, UINT, HWND, UINT);    // function
  27. };
  28. typedef struct find_t FIND_T;
  29. //
  30. // Function prototypes used by generic template
  31. //
  32. INT  APIENTRY WinMain(HANDLE, HANDLE, LPSTR, INT);
  33. INT  InitApp(HANDLE);
  34. INT  InitInstance(HANDLE, LPSTR, INT);
  35. INT  TermInstance(HANDLE, INT);
  36. LONG CALLBACK MainWndProc(HWND, UINT, UINT, LONG);
  37. BOOL CALLBACK AboutDlgProc (HWND, UINT, UINT, LONG);
  38. INT  MyDisplayDialog (HINSTANCE, LPCSTR, HWND, WNDPROC, LPARAM);
  39. BOOL MyWritePrivateProfileInt (char *, char *, int, int, char *);
  40. //============================================================
  41. // Interpeter stuff
  42. //============================================================
  43. //
  44. // Var list structure
  45. //
  46. typedef struct {
  47.     PSTR        pszName;
  48.     BYTE        ucType;
  49.     BYTE        ucNameLen;
  50.     WORD        wData;
  51.     DWORD        dwData;
  52. } TOKEN;
  53. typedef TOKEN *PTOKEN;
  54. typedef TOKEN FAR *LPTOKEN;
  55. //
  56. // Used for line tokenization
  57. //
  58. typedef struct {
  59.     BYTE        ucLen;
  60.     BYTE        ucType;
  61.     PTOKEN    ptToken;
  62. } LINETOKEN;
  63. typedef LINETOKEN *PLINETOKEN;
  64. typedef LINETOKEN FAR *LPLINETOKEN;
  65.  
  66. typedef struct {
  67.     BYTE    ucLen;
  68.     BYTE    ucType;
  69.     UINT      wLineLen;
  70.     UINT      wLineNum;
  71. } LINESTARTTOK;
  72. typedef LINESTARTTOK *PLINESTARTTOK;
  73. typedef LINESTARTTOK FAR *LPLINESTARTTOK;
  74.  
  75. typedef struct {
  76.     BYTE    ucLen;
  77.     BYTE    ucType;
  78.     INT     sData;
  79. } VARSCONST;
  80. typedef VARSCONST *PVARSCONST;
  81. typedef VARSCONST FAR *LPVARSCONST;
  82.  
  83. typedef struct {
  84.     BYTE    ucLen;
  85.     BYTE    ucType;
  86.     LONG    lData;
  87. } VARLCONST;
  88. typedef VARLCONST *PVARLCONST;
  89. typedef VARLCONST FAR *LPVARLCONST;
  90.  
  91. typedef struct {
  92.     BYTE    ucLen;
  93.     BYTE    ucType;
  94.     char    szData[];
  95. } STRCONST;
  96. typedef STRCONST *PSTRCONST;
  97. typedef STRCONST FAR *LPSTRCONST;
  98. //
  99. // String Item structure
  100. //
  101. typedef struct {
  102.     WORD    wLen;
  103.     WORD    wLinkBack;
  104.     char    szStr[];
  105. } ITEM;
  106. typedef ITEM *PITEM;
  107.  
  108. typedef    INT (*STATEMENTFUNC) (LPLINETOKEN *, INT);
  109. typedef    INT (*OPFUNC) (LPLINETOKEN *, PTOKEN, PTOKEN);
  110. typedef    INT (*FUNCFUNC) (LPLINETOKEN *, PTOKEN);
  111. typedef    DWORD (CALLBACK CBTOKFUNC) (INT, LPTOKEN, LPSTR, BYTE, UINT, DWORD);
  112. typedef    CBTOKFUNC FAR *LPCBTOKFUNC;
  113.  
  114. typedef struct {
  115.     PSTR        pszName;
  116.     BYTE        ucType;
  117.     BYTE        ucNameLen;
  118.     WORD        wLevel;
  119.     STATEMENTFUNC    Fxn;
  120. } STATEMENTTOK;
  121. typedef STATEMENTTOK *PSTATEMENTTOK;
  122.  
  123. typedef struct {
  124.     PSTR        pszName;
  125.     BYTE        ucType;
  126.     BYTE        ucNameLen;
  127.     WORD        wLevel;
  128.     OPFUNC    Fxn;
  129. } OPTOK;
  130. typedef OPTOK *POPTOK;
  131. typedef struct {
  132.     PSTR        pszName;
  133.     BYTE        ucType;
  134.     BYTE        ucNameLen;
  135.     WORD        wData;
  136.     FUNCFUNC    Fxn;
  137. } FUNCTOK;
  138. typedef FUNCTOK *PFUNCTOK;
  139. //
  140. // Templates for prefefined tokens
  141. //
  142. typedef struct {
  143.     char    *szName;
  144.     BYTE    ucType;
  145.     BYTE    ucLevel;
  146.     OPFUNC    Fxn;
  147. } LOCALOP;
  148. typedef LOCALOP *PLOCALOP;
  149.  
  150. typedef struct {
  151.     char        *szName;
  152.     BYTE        ucType;
  153.     FUNCFUNC    Fxn;
  154. } LOCALFUNC;
  155. typedef LOCALFUNC *PLOCALFUNC;
  156.  
  157. typedef struct {
  158.     char        *szName;
  159.     BYTE        ucType;
  160.     STATEMENTFUNC    Fxn;
  161. } LOCALSTATEMENT;
  162. typedef LOCALSTATEMENT *PLOCALSTATEMENT;
  163. //
  164. // Entry point defines for external function libs
  165. //
  166. typedef INT (CALLBACK LIBLOAD) (HWND, INT, INT);
  167. typedef LIBLOAD FAR *LPLIBLOAD;
  168. typedef INT (CALLBACK LIBRESET) (INT, LPCBTOKFUNC);
  169. typedef LIBRESET FAR *LPLIBRESET;
  170. typedef INT (CALLBACK LIBFUNC) (LPLINETOKEN *, LPTOKEN, UINT, LPCBTOKFUNC, HWND);
  171. typedef LIBFUNC FAR *LPLIBFUNC;
  172. typedef INT (CALLBACK LIBGETERR) (INT, LPSTR, INT);
  173. typedef LIBGETERR FAR *LPLIBGETERR;
  174. typedef INT (CALLBACK LIBGETVER) (LPINT, LPSTR, INT);
  175. typedef LIBGETVER FAR *LPLIBGETVER;
  176.  
  177. typedef INT (CALLBACK ONPROCENTRY) (INT, LPVOID, LPVOID);
  178. typedef ONPROCENTRY FAR *LPONPROCENTRY;
  179.  
  180. //
  181. // Profile String Names
  182. //
  183. #define     PRO_XPOS     "WinPosX"
  184. #define     PRO_YPOS     "WinPosY"
  185. #define     PRO_XSIZE    "WinSizeX"
  186. #define     PRO_YSIZE    "WinSizeY"
  187. //
  188. // Resource Idendifiers
  189. //
  190. #define     IDM_OPEN       101
  191. #define     IDM_REOPEN     102
  192. #define     IDM_LOAD       103
  193. #define     IDM_EXIT       104
  194. #define     IDM_SHOWLIST   200
  195. #define     IDM_SHOWOUT    201
  196. #define     IDM_CLEAROUT   202
  197. #define     IDM_MINONRUN   203
  198. #define     IDM_ABOUT      500
  199.  
  200. #define     IDD_LINELIST   600
  201. #define     IDD_OUTLIST    601
  202. #define     IDD_TOKLINE    602
  203. #define     IDD_RUN        603
  204. #define     IDD_STEP       604
  205. #define     IDD_RESET      605
  206.  
  207. #define     IDD_ASKTEXT    700
  208. #define     IDD_ASKANS     701
  209. //
  210. // User defined Messages
  211. //
  212. #define     MYMSG_REFRESH  (WM_USER+1)
  213. //
  214. // Interpeter constants
  215. //
  216. #define    WAITTIMER_ID             1
  217.  
  218. #define    MYTRUE                   1
  219. #define    MYFALSE                  0
  220.  
  221. #define    FUNC_SKIP                1
  222. #define    FUNC_EXECUTE             2
  223.                                   
  224. #define    RC_END_OF_PROGRAM        1
  225. #define    RC_END_OF_SUB            2
  226. #define    RC_END_OF_LOOP           3
  227. #define    RC_END_OF_BLOCK          4
  228.  
  229. #define    ERR_SYNTAX              -1
  230. #define    ERR_EXPECTED_NUMBER     -2
  231. #define    ERR_DIVIDE_BY_ZERO      -3
  232. #define    ERR_UNEXP_EOL           -4
  233. #define    ERR_ILLEGAL_ASSIGNMENT  -5
  234. #define    ERR_NO_END_QUOTE        -6
  235. #define    ERR_EXTRA_CHARS         -7
  236. #define    ERR_NO_CLOSE_PAREN      -8
  237. #define    ERR_NO_OPEN_PAREN       -9
  238. #define    ERR_UNKNOWN_OP          -10
  239. #define    ERR_MULTI_DEF_LABEL     -11
  240. #define    ERR_12                  -12
  241. #define    ERR_RETURN_OUTSIDE_FUNC -13
  242. #define    ERR_END_WITHOUT_DO      -14
  243. #define    ERR_NOARGS              -15
  244. #define    ERR_BAD_SENDKEY_STR     -16
  245.  
  246. #define    ERR_NO_TOKEN_SPACE      -17
  247. #define    ERR_OUT_OF_MEMORY       -18
  248. #define    ERR_FILE_TOO_BIG        -19
  249. #define    ERR_CANNOT_OPEN_FILE    -20
  250. #define    ERR_LINE_TOO_LONG       -21
  251. #define    ERR_UNEXP_PROGTERM      -22
  252. #define    ERR_UNKNOWN_CMDSWITCH   -23
  253. #define    ERR_PARSE_UNKSYMBOL     -24
  254. #define    ERR_NAME_TOO_LONG       -25
  255. #define    ERR_MEM_LOCK            -26
  256. #define    ERR_NO_TIMERS           -27
  257. #define    ERR_OVERFLOW            -28
  258. #define    ERR_FILE_TOO_COMPLEX    -29
  259. #define    ERR_BAD_LIB_LOAD        -30
  260. #define    ERR_FUNC_NOT_FOUND      -31
  261.  
  262. // Error nums: -32 to -63 are Windows launch error codes
  263. #define    ERR_LAUNCH_ERR          -32
  264. // Error nums: -64 to -249 are file open error codes
  265. #define    ERR_FOPEN_ERR           -63 //Err codes start at 1
  266. #define    ERR_FILE_NOT_FOUND      -65
  267. #define    ERR_PATH_NOT_FOUND      -66
  268.  
  269. #define    ERR_BAD_FUNC_NAME       -256
  270. #define    ERR_BAD_FUNC            -257
  271. #define    ERR_TOO_FEW_PARMS       -258
  272. #define    ERR_LIBERROR_START      -2048
  273.  
  274. // 1 - 31 Line token types
  275. #define    TTYPE_LINE                1
  276. #define    TTYPE_CMT2EOL             2
  277. #define    TTYPE_CMTSTART            3
  278. #define    TTYPE_CMTEND              4
  279. #define    TTYPE_SCONST              5
  280. #define    TTYPE_LCONST              6
  281. #define    TTYPE_STRCONST            7
  282. #define    TTYPE_VAR                 8
  283. // 32 - 63 Var token types
  284. #define    TTYPE_VARSTART           32
  285. #define    TTYPE_NUM                32
  286. #define    TTYPE_STR                33
  287. #define    TTYPE_DATA               34
  288. #define    TTYPE_LABEL              35
  289. #define    TTYPE_RETVAL             36
  290. #define    TTYPE_VAREND             63
  291. // 64 - 95 operator token types
  292. #define    TTYPE_OPSTART            64
  293. #define    TTYPE_LOP                64
  294. #define    TTYPE_LUOP               65
  295. #define    TTYPE_LOCALFUNC          66
  296. #define    TTYPE_OPAREN             67
  297. #define    TTYPE_CPAREN             68
  298. #define    TTYPE_ASSIGN_CMP         69
  299. #define    TTYPE_ASSIGN             70
  300. #define    TTYPE_BREAK              71
  301. #define    TTYPE_INTCMD             72
  302. #define    TTYPE_LIBFUNC            73
  303. #define    TTYPE_OPEND              95
  304. // 96 - 127 statement token types
  305. #define    TTYPE_STATEMENTSTART     96
  306. #define    TTYPE_LSTATEMENT         96
  307. #define    TTYPE_THENELSE           97
  308. #define    TTYPE_BEGBLK             98
  309. #define    TTYPE_ENDBLK             99
  310. #define    TTYPE_BEGCALL           100
  311. #define    TTYPE_STATEMENTEND      127
  312. // 128 - program stuff
  313. #define    TTYPE_EOL               128
  314. #define    TTYPE_EOF               129
  315. #define    TTYPE_DEL               255
  316.  
  317. // Callback function ID numbers                                    
  318. #define    CBF_ADDTOKEN              1
  319. #define    CBF_FINDTOKEN             2
  320. #define    CBF_SETTOKEN              3
  321. #define    CBF_GETTOKENVAL           4
  322. #define    CBF_GETTOKENSTRING        5
  323. #define    CBF_RESOLVELINE           6
  324.  
  325.